package loja;

import java.util.Arrays;

public class Loja {
	
	private Cliente[] cliente ;//declaracao dos arrays
	private Produto[] produto ;
	private int indiceP;
	private int indiceC;
	//private int quantidade;
	
	public Loja(int tam){//construtor da classe recebendo o tamanho do array
		
		//Cliente[] cliente = new Cliente[tam];nao inicializar desta maneira
		this.cliente = new Cliente[tam]; //inicializando os arrays com this. e com 
		this.produto = new Produto[tam];//seu tamanho tam recebido na main
	}
	
	public Loja(){
		
	}
	
	@Override
	public String toString() {
		return "\nLoja Fuck Yourself " + Arrays.toString(cliente) + "\n\n" + "Produtos Puta que Pariu" + Arrays.toString(produto)+"\n";
	}

	public void insereCliente(Cliente clie){
		this.cliente[indiceC] = clie ;
		indiceC++;
		System.out.println("Cliente inserido com sucesso");
				
	}
	
	public void insereCompra(String nomeCliente,String nomePrdComprado,int quantidade){
		Produto aux = this.procuraProduto(nomePrdComprado);
		Cliente auxc = this.procuraCliente(nomeCliente);
		//String sn = aux.
		//String sn = auxc.getNomeCli();
		
		String s = aux.getNomeProd();
		double d = aux.getPrecoProd();
		double total = d * quantidade;
		System.out.println("O metodo falou = O cliente: "+nomeCliente+" comprou o produto: "+s+" custa: R$"+d+"  comprou "+quantidade+"pecas que custou no total R$"+total);
	}
	
	public Cliente procuraCliente(String nomeCli){//como procuramos um cliente e temos que retornar um Cliente
		Cliente resposta = null;//encontrado esta funcao tem que ser do tipo Cliente
		for(int i=0;i<indiceC;i++){
			Cliente aux = this.cliente[i];
			if(aux.getNomeCli().compareToIgnoreCase(nomeCli)==0){
				resposta = aux;
			}
		}
		return resposta;
	}
	
	public void removerCliente(String nomeCli){
		for(int i =0;i<indiceC;i++){
			Cliente aux = this.cliente[i];
			if(aux.getNomeCli().compareToIgnoreCase(nomeCli)==0){
				this.cliente[i] = this.cliente[indiceC-1];//copia o ultimo elemento do array sobre o elemento a ser removido
				indiceC --;//ajusta o valor do indice
				System.out.println("Cliente removido com sucesso");
			}
		}
	}
	
	public void insereProduto(Produto produto){
		this.produto[indiceP] = produto;
		indiceP++;
		System.out.println("Produto inserido com sucesso");
	}
	
	public Produto procuraProduto(String nomeProd){//como procuramos um produto e temos que retornar o produto
		Produto resposta = null;//achado esta funcao tem que ser do tipo Produto
		
		for(int i=0;i<indiceP;i++){
			Produto aux = this.produto[i];
			if(aux.getNomeProd().compareToIgnoreCase(nomeProd)==0){
				resposta = aux;
			}
		}
		return resposta;//retorna o produto achado
	}
	
	public void removerProduto(String nomeProd){
		for(int i =0;i<indiceP;i++){
			Produto aux = this.produto[i];
			if(aux.getNomeProd().compareToIgnoreCase(nomeProd)==0){
				this.produto[i] = this.produto[indiceP-1];//copia o ultimo elemento do array sobre o elemento a ser removido
				indiceP --;//ajusta o valor do indice
				System.out.println("Produto removido com sucesso");
			}
		}
	}
	/*/**
	 * Altere a classe RepositorioDVDsArray para que os metodos procurar e remover 
	 * nao tenham codigo duplicado. Ou seja, crie um metodo privado que retorna o 
	 * indice do array onde esta o DVD desejado. Faca os metodos procurar e remover 
	 * utilizarem este metodo novo
	 *  Falta implementar a funcao get indice e entender seu significado para
	 * corrigir o codigo em Loja que manipula os Arrays 
	private int getIndiceC(int codigo) {
		int resposta = -1;
		for(int i=0; i< indice; i++) {
			DVD aux = this.dvds[i];
			if(aux.getCodigo() == codigo) {
				resposta = i;
			}
		}
		return resposta;
	}
	
	private int getIndiceP(int codigo) {
		int resposta = -1;
		for(int i=0; i< indice; i++) {
			DVD aux = this.dvds[i];
			if(aux.getCodigo() == codigo) {
				resposta = i;
			}
		}
		return resposta;
	}
	public DVD procurar(int codigo) {
		DVD resposta = null;
		int i = this.getIndice(codigo);
		if(i >= 0) {
			resposta = this.dvds[i];
		}
		return resposta;
	}
	
	public void remover(int codigo) {
		int i = this.getIndice(codigo);
		if(i >= 0) {
			this.dvds[i] = this.dvds[indice-1]; //copia o ultimo elemento do array sobre o elemento a ser removido
			indice = indice - 1;                //ajusta o valor do indice
		}
	}
	*/

	
}
